// Copyright @ ChenChao



#include "Characters/WarriorBaseCharacter.h"

#include "AbilitySystem/WarriorAbilitySystemComponent.h"
#include "AbilitySystem/WarriorAttributeSet.h"

// 构造函数
AWarriorBaseCharacter::AWarriorBaseCharacter()
{
 	// 将此字符设置为每帧调用Tick（）。如果你不需要它，你可以关闭它来提高性能。
	PrimaryActorTick.bCanEverTick = false;
	PrimaryActorTick.bStartWithTickEnabled = false;

	/** 图元是否接收贴花。 */
	GetMesh()->bReceivesDecals = false;

	//将能力系统组件添加到角色
	WarriorAbilitySystemComponent = CreateDefaultSubobject<UWarriorAbilitySystemComponent>(TEXT("WarriorAbilitySystemComponent"));

	//将属性集添加到角色
	WarriorAttributeSet = CreateDefaultSubobject<UWarriorAttributeSet>(TEXT("WarriorAttributeSet"));
}

UAbilitySystemComponent* AWarriorBaseCharacter::GetAbilitySystemComponent() const
{
	return WarriorAbilitySystemComponent;
}

//当Controller（玩家或AI）获得该Pawn控制权时触发
void AWarriorBaseCharacter::PossessedBy(AController* NewController)
{
	Super::PossessedBy(NewController);
	if (WarriorAbilitySystemComponent == nullptr) return;
	
	//初始化能力系统与角色的关联关系
	WarriorAbilitySystemComponent->InitAbilityActorInfo(this, this);

	//确保角色启动资产不为空
	// ensure(!CharacterStartUpData.IsNull());
	ensureMsgf(!CharacterStartUpData.IsNull(),TEXT("忘记给角色 %s 分配启动资产了！"),*GetName());
	
}


